/* eslint-disable no-plusplus,radix,prefer-destructuring */
/* 用于放公用方法 */
import moment from 'moment';

global.storeDropDownData = {};
// global.systemSettings = [];
// global.commonConst = [];
// global.dNetPrice = 6;
// global.dNetMoney = 6;
// global.sDateFormat = 'YYYY-MM-DD';
/*   日期控件显示格式   */
export const dateFormatA = 'YYYY-MM-DD HH:mm:ss';

/**   判断是否是undefined   */
export function isUndefined(value) {
  return value === undefined;
}

/**   判断是否非undefined   */
export function isNotUndefined(value) {
  return !isUndefined(value);
}

/** 判断是否是为undefined或null */
export function isUndefinedNull(value) {
  return value === undefined || value === null;
}

/**   判断是否是空字符串   */
export function isEmptyStr(str) {
  return str === undefined || str === null || str.trim() === '';
}

/**   判断是否是非空字符串   */
export function isNotEmptyStr(str) {
  return !isEmptyStr(str);
}

/**   判断是否是空数字   */
export function isEmptyNumber(num) {
  return num === undefined || num === '';
}

/**   判断是否是非空数字   */
export function isNotEmptyNumber(num) {
  return !isEmptyNumber(num);
}

/**   转换字符串为boolean   */
export function converStrToBoolean(str) {
  if (typeof str === 'boolean') {
    return str;
  }
  if (typeof str === 'string') {
    if (isNotEmptyStr(str) && str.toLocaleLowerCase() === 'true') {
      return true;
    }
  }
  return false;
}

/**   转换数字为boolean   */
export function converNumToBoolean(num) {
  if (typeof num === 'boolean') {
    return num;
  }
  if (typeof num === 'number') {
    if (isNotEmptyNumber(num) && num > 0) {
      return true;
    }
  }
  return false;
}

/**   转换数字字符串为boolean   */
export function converNumStrToBoolean(value) {
  if (typeof value === 'boolean') {
    return value;
  }
  if (typeof value === 'number') {
    if (isNotEmptyNumber(value) && value > 0) {
      return true;
    }
  }
  if (typeof value === 'string') {
    if (isNotEmptyStr(value) && value.toLocaleLowerCase() === 'true') {
      return true;
    }
  }
  return false;
}

/**   转换undefined为空字符串   */
export function strUndefinedToEmpty(str) {
  return isEmptyStr(str) ? '' : str;
}

/**   转换undefined为空对象   */
export function convertUndefinedToEmptyObject(obj) {
  return isEmptyObject(obj) ? {} : obj;
}

/**   转换undefined为空数组   */
export function convertUndefinedToEmptyArr(arr) {
  return isEmptyArr(arr) ? [] : arr;
}

/**   转换字符串为对象   */
export function convertStrToObj(str) {
  return isEmptyStr(str) ? {} : JSON.parse(str);
}

/**   转换对象为字符串   */
export function convertObjToStr(obj) {
  return isEmptyObject(obj) ? '' : JSON.stringify(obj);
}

/**   创建随机数方法(最大值最小值创建)   */
export function getRandomByMinMax(min, max) {
  if (min >= max) {
    return 0;
  }
  return min + Math.round(Math.random() * (max - min));
}

/**   根据位数获取最小值   */
export function getMinByMum(mum) {
  if (mum <= 0 || mum === 1) {
    return 0;
  }
  let str = '1';
  for (let i = 1; i < mum; i++) {
    str += '0';
  }
  return Number.parseInt(str);
}

/**   根据位数获取最大值   */
export function getMaxByMum(mum) {
  let str = '';
  for (let i = 0; i < mum; i++) {
    str += '9';
  }
  return Number.parseInt(str);
}

/**   创建随机数方法(位数创建)   */
export function getRandomByNum(num) {
  return getRandomByMinMax(getMinByMum(num), getMaxByMum(num));
}

/**   创建主表id   */
export function createSid() {
  return Date.parse(new Date()).toString() + getRandomByNum(19);
}

/**   判断是否是空数组   */
export function isEmptyArr(arr) {
  return arr === undefined || arr === null || arr.length === 0;
}

/**   判断是否是非空数组   */
export function isNotEmptyArr(arr) {
  return !isEmptyArr(arr);
}

/**   判断是否是空对象   */
export function isEmptyObject(obj) {
  return obj === undefined || obj === null || Object.keys(obj).length === 0;
}

/**   判断是否是非空对象   */
export function isNotEmptyObject(obj) {
  return !isEmptyObject(obj);
}

/**   对象转数组   */
export function objectToArr(obj) {
  const arr = [];
  if (isNotEmptyObject(obj)) {
    for (const key of Object.keys(obj)) {
      const value = obj[key];
      arr.push({ sId: key, value });
    }
  }
  return arr;
}

/**   值是否为空  */
export function isEmpty(obj) {
  return obj === undefined || obj === null || obj === '';
}


/**   数组转对象   */
export function arrToObject(arr) {
  const obj = {};
  if (isNotEmptyArr(arr)) {
    for (const objEach of arr) {
      for (const key of objEach) {
        obj[key] = objEach[key];
      }
    }
  }
  return obj;
}

/**   转换boolean为是否显示   */
export function convertBooleanToDisplayBlock(ret) {
  return ret ? 'inline-block' : 'none';
}

/**   转换boolean为是否显示   */
export function convertBooleanToDisplay(ret) {
  return ret ? '' : 'none';
}

/**   转换字符串为数字   */
export function convertStrToNumber(str) {
  if (isNotEmptyStr(str) && typeof str === 'string') {
    const num = Number(str);
    if (num) {
      return num;
    }
  }
  return str;
}

/**   转换字符串为数字0   */
export function convertStrToNumber0(str) {
  if (typeof str === 'number') {
    return str;
  }
  if (isNotEmptyStr(str) && !isNaN(str)) {
    return Number(str);
  }
  return 0;
}

/**   转换字符串为数字undefined   */
export function convertStrToNumberUndefined(str) {
  if (typeof str === 'number') {
    return str;
  }
  if (isNotEmptyStr(str)) {
    return Number(str);
  }
  return undefined;
}

/**   转换数字为字符串   */
export function convertNumberToStr(num) {
  if (typeof num === 'string') {
    return num;
  }
  if (isNotEmptyNumber(num)) {
    return num.toString();
  }
  return '';
}

/**   转换日期控件格式   */
export function convertObjToMoment(obj, dateFormat) {
  if (isNotUndefined(obj) && obj !== null) {
    return moment(obj, dateFormat);
  }
  return null;
}

/**   转换日期控件格式(默认日期)   */
export function convertObjToMomentDefault(obj, dateFormat) {
  if (isNotUndefined(obj) && obj !== null) {
    return moment(obj, dateFormat);
  }
  return moment().format(dateFormat);
}

/** 是否是数字 */
export function isNum(value) {
  if (value === '') return false;
  value = convertStrToNumberUndefined(value);
  if (isNaN(value)) return false;
  return typeof value === 'number';
}

/** 是否不是数字 */
export function isNotNum(value) {
  return !isNum(value);
}

/**   创建新Tab标签Id   */
export function createNewTabId() {
  return new Date().getTime().toString();
}

/** 去除小数末尾0 */
export function parseFloatNum(value) {
  return parseFloat(value);
}

/** 去除小数末尾0 */
export function convertToNum(value) {
  return isNum(parseFloatNum(value)) ? parseFloatNum(value) : 0;
}

/** 转换成相应小数位的数字 */
export function convertFixNum(value, num) {
  return convertStrToNumber(value.toFixed(num));
}

/**   过滤非数字(n位小数)   */
export function filterDisNumberN(value, n) {
  if (typeof value === 'string' && isEmptyStr(value)) {
    return value;
  }
  let str = convertNumberToStr(value).replace(/[^\d.\d]/g, '');
  str += str.indexOf('.') < 0 ? '.000000000000000000' : '000000000000000000000';
  return convertStrToNumber(str).toFixed(n);
}

/** 不为数字转为1,为数字的去除小数末尾0 */
export function convertIsNotNumToNumber1(value) {
  if (isNum(value)) {
    return parseFloat(value);
  }
  return 1;
}

/**   对象循环赋值返回新对象{key: key}   */
export function returnObjValue(sAssignField) {
  const obj = {};
  const arrayObj = sAssignField.split(',');
  for (const child of arrayObj) {
    const childArray = child.split(':');
    obj[childArray[0]] = childArray[1];
  }
  return obj;
}

/**   对象是否存在某值   */
export function getObjKeyByValue(obj, value) {
  if (isNotEmptyObject(obj) && isNotEmptyStr(value)) {
    for (const key of Object.keys(obj)) {
      if (obj[key] === value) {
        return key;
      }
    }
  }
  return '';
}

/**   获取存储下拉数据   */
export function getStoreDropDownData(formId, name, fieldName) {
  const allName = formId + name + fieldName;
  const dropDownData = global.storeDropDownData[allName];
  return dropDownData;
}

/**   存储下拉数据   */
export function setStoreDropDownData(formId, name, fieldName, dropDownData) {
  const allName = formId + name + fieldName;
  global.storeDropDownData[allName] = dropDownData;
  return true;
}

/**   存储下拉数据   */
export function clearStoreDropDownData() {
  global.storeDropDownData = {};
  return true;
}

// /**   获取系统设定数据   */
// export function getSystemSettings() {
//   return global.systemSettings;
// }
// /**   存储系统设定数据   */
// export function setSystemSettings(systemSettings) {
//   global.storeDropDownData = systemSettings;
//   return true;
// }

// /**   获取存储下拉数据   */
// export function getCommonConst() {
//   return global.commonConst;
// }

// /**   存储下拉数据   */
// export function setCommonConst(commonConst) {
//   global.commonConst = commonConst;
//   return true;
// }


// /**   获取价格保留小数位   */
// export function getNetPrice() {
//   return global.dNetPrice;
// }

// /**   存储价格保留小数位   */
// export function setNetPrice(dNetPrice) {
//   global.dNetPrice = dNetPrice;
//   return true;
// }

// /**   获取金额保留小数位   */
// export function getNetMoney() {
//   console.log('global.dNetMoney;', global.dNetMoney);
//   return global.dNetMoney;
// }

// /**   存储金额保留小数位   */
// export function setNetMoney(dNetMoney) {
//   global.dNetMoney = dNetMoney;
//   return true;
// }

// /**   获取金额保留小数位   */
// export function getDateFormat() {
//   return global.sDateFormat;
// }

// /**   存储金额保留小数位   */
// export function setDateFormat(sDateFormat) {
//   global.sDateFormat = sDateFormat;
//   return true;
// }

